package com.weiss.jpro.config;

import com.weiss.jpro.dto.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

// @RestControllerAdvice 是 Spring 提供的一个注解，用于定义全局异常处理器。
// 它结合了 @ControllerAdvice 和 @ResponseBody 的功能，使得你可以统一处理所有控制器层的异常
//作用
// 全局异常处理：@RestControllerAdvice 标记的类中的方法可以使用 @ExceptionHandler 注解来处理特定类型的异常
//统一响应格式：异常处理方法的返回值将被自动转换为 HTTP 响应体，通常用于返回统一的错误信息
@Slf4j
@RestControllerAdvice
public class WebExceptionAdvice {
    // @RestControllerAdvice 标记了 WebExceptionAdvice 类为全局异常处理器。
    // @ExceptionHandler(RuntimeException.class) 指定了 handleRuntimeException 方法用于处理 RuntimeException 类型的异常
    //异常处理方法 handleRuntimeException 记录了异常日志，并返回了一个 Result 对象，表示异常处理的结果
    @ExceptionHandler(RuntimeException.class)
    public Result handleRuntimeException(RuntimeException e) {
        log.error(e.toString(), e);
        return Result.fail("服务器异常");
    }
}
